package com.lanswon.qzsmk.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.lanswon.qzsmk.model.AppOpenReg;
import com.lanswon.qzsmk.vo.AppFeeVo;
import com.lanswon.qzsmk.vo.AppOpenInfoVo;
import com.lanswon.qzsmk.vo.CardInfoAndCustomerInfo;




public interface AppOpenRegMapper {
	
	/**
	 * 保存
	 * @param aor
	 */
	void insert(AppOpenReg aor);
	
	/**
	 * 更新
	 * @param aor
	 */
	void update(AppOpenReg aor);
	
	/**
	 * 查询该卡中已经开通应用
	 * @param citizenCardNo
	 * @return
	 */
	List<AppOpenReg> queryAppOpenRegByCitizenCardNo(String citizenCardNo,String appStatus);
	
	/**
	 * 根据市民卡号，appflag查询
	 * @param appTypea
	 * @return
	 */
	AppOpenReg queryAppOpenRegByCardNoAndFlag(String citizenCardNo,String appFlag);
	
	/**
	 * 查询因补/换卡已经关闭的应用
	 * @param citizenCardNo 市民卡号
	 * @param remark1  补卡标记1
	 * @param remark2  换卡标记2
	 * @return
	 */
	List<AppOpenReg> queryAppOpenRegByRemark2(String citizenCardNo,String remark1,String remark2);
    
	/**
	 * 查询因补/换卡/挂失已经关闭的应用
	 * @param citizenCardNo 市民卡号
	 * @param remark
	 * @return
	 */
	List<AppOpenReg> queryAppOpenRegByRemark(String citizenCardNo,String remark);
	/**
	 * 计数
	 * @return
	 */
	int countByExample(String citizenCardNo);
	/**
	 * 通过市民卡号来查询所有停用和开通的应用
	 * @param appStatusOpen 
	 * @return
	 */
	List<AppOpenReg> queryAppOpenRegStopByCitizenCardNo(String citizenCardNo);
	
	/**
	 * 根据卡号和是否已退款查询应用记录
	 * @param citizenCardNo
	 * @param isdeposit
	 * @return
	 */
	List<AppOpenReg> queryAppOpenByCitizenCardNoAndIsdeposit(@Param("citizenCardNo")String citizenCardNo,@Param("isdeposit")String isdeposit);
	
	/**
	 * 查询是否开通该应用
	 * @param citizenCardNo
	 * @param appFlag
	 * @return
	 */
	AppOpenReg checkIsOpen(@Param("citizenCardNo")String citizenCardNo,@Param("appFlag")String appFlag);
	
	/**
	 * 查询已开通应用指定收费类型的应用
	 * @param citizenCardNo
	 * @param feeType
	 * @return
	 */
	List<AppFeeVo> queryAppOpenRegAboutFee(String citizenCardNo,String feeType,String appStatus);

	/**
	 * 查询指定日期开通的指定的应用
	 * @return
	 */
	List<AppOpenReg> queryDayOpenApp(@Param("date")Date date,@Param("appFlag")String appFlag);
	
	/**
	 * 通过市民卡号查询应用信息
	 * @param string
	 * @return
	 */
	List<AppOpenInfoVo> queryAppOpenRegInfoByCitizenNo(@Param("citizenCardNo")String citizenCardNo);
	
	/**
	 * 通过市民卡号查询个人和卡片信息
	 * @param citizenCardNo
	 * @return
	 */
	CardInfoAndCustomerInfo queryCardInfoByCitizenCardNo(String citizenCardNo);
	
	/**
	 * 更新应用开通记录状态
	 * @param appStatusOpen
	 */
	void updateAORStatusByCardNo(@Param("appStatus")String appStatus,@Param("openRegId")String openRegId
								,@Param("operator")String operator);	
}